package com.yonyou.pmclouds.basecom.entity;

import com.yonyou.pmclouds.basecom.util.BeanHelper;
import com.yonyou.pmclouds.basecom.util.CommonFieldConst;
import com.yonyou.pmclouds.workflow.entity.PMAssignInfo;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;

/**
 * 所有的需要持久化的vo需要继承的类，其他字段公共字段按照约定，使用固定名称
 *
 * @author mapeif
 */
@Slf4j
public class SuperVO extends Entity {

    private static final long serialVersionUID = 1357871676537065513L;
    /**
     * 版本记录标志，使用uuid生成
     */
    @Setter
    @Getter
    private String changeFlag;
    /**
     * 删除标志，避免真实删除
     */
    @Setter
    @Getter
    private byte dr;

    /**
     * 此处有坑如果没有主键注解不会报错，可能导致无法保存
     * 但是为了保证没有主键的数据保存，不能抛出异常
     */
    @Override
    public Object pkFiledValue() {
        return BeanHelper.getId(this);
    }


    @Override
    public void initPkFiledValue(Object id) {
        BeanHelper.setId(this, id);

    }

    public String pkFiledName() {
        return BeanHelper.getIdFieldName(this.getClass());

    }

    @Override
    public SuperVO clone() {
        try {
            return (SuperVO) super.clone();
        } catch (CloneNotSupportedException e) {
            return null;
        }
    }

    public String taskReceiverField() {
        return null;
    }

    public String taskSenderField() {
        return CommonFieldConst.CREATOR;
    }

    public String billStatusField() {
        return null;
    }

    //审批流程指派信息
    public PMAssignInfo assignInfo;
}
